With the demand for high-reliability transmission of information in digital communication channels and storage systems increasing, various error-correcting skills have been investigated and developed for such systems. They are applied to detect and correct the errors which are caused by a variety of factors, e.g. transmission channel noise, and retention and endurance of NAND flash.
Conventionally, algebraic codes, e.g. BCH code and RS code, are used in data transmission systems and provide certain error-correcting capacity. Due to user requirement and huge data transmission, stronger Error Correcting Codes (ECC) are needed to support higher raw bit errors to enhance the lifespan of associated devices. In order to enhance error correcting capacity, soft-values are applied for soft-decision decoding. Recently, Low Density Parity Check (LDPC) code which has excellent performance in soft-decision is widely applied in variety area. Soft-decoding method of LDPC codes is not only good at error correction capability, but also efficiently implemented in hardware. However, in applications, the input precision of the soft values will affect the error-correcting capacity when decoding. Moreover, the structure of the parity check matrix of LDPC codes leads to a phenomenon of error floor, which is the flatten region in the performance curve of Bit Error Rate (BER) versus Signal-to-Noise Ratio (SNR). This issue is very crucial for LDPC decoding. Especially, for some applications, the decoding performance requirement is at Frame Error Rate (FER)<10−10. On the other hand, since high transmission rate of the storage data under cost consideration is required, the error-correcting capacity of ECC is limited due to the limited spare space of the parity.
In order to improve error-correcting capacity and solve the phenomenon of the error floor for LDPC codes, there are many ECC techniques applied. For example, product codes and concatenated codes are the popular ones. Take the concatenated codes for instance. The encoder for a conventional concatenated code of a (n1, k1) linear code C1 and a (n2, k2) linear code C2 is to first get a codeword c1 via encoding message by using the linear code C1, and then encode c1 by using the linear code C2 following the first encoding process to get the codeword c, where k1<n1=k2<n2. The code rate of the concatenated code is R=(k1)/(n2). Consequently, the concatenated code costs much spare space for double protecting and spends much operation time, i.e., encoding time and decoding time.
Therefore, an innovative concatenated coding system is still desired to settle all the issues above.